home *** CD-ROM | disk | FTP | other *** search
/ Interactive Media Design Review 1999 / Interactive Media Design Review 1999.iso / pc / Demos / Herois / Codigo.Cst / 00042_Script_AnimaFotosTrek < prev    next >
Text File  |  1999-03-19  |  5KB  |  156 lines

  1. property spr
  2. property memberPrim, memberUlt -- Cast members que serao animados
  3. property memPrim, memQuantos -- Membros: em numero
  4. property espera -- Tempo de espera entre cada mudanca (em ticks) 
  5. property aleatorio -- True para mudanca aleatoria
  6. property ultimaTroca -- Hora em que foi feita ultima troca
  7. property fotoAtual
  8. property tempoAleatorio
  9. property proxEspera
  10. property delta
  11. property prioridade
  12. property trocaMetade, memMetade, quantosMetade, atualMetade
  13. property memoria, limitado
  14.  
  15. on getBehaviorDescription
  16.   return "Anima sprites"
  17. end
  18.  
  19. on getPropertyDescriptionList
  20.   set p_list = [ ¼
  21.     #memberPrim: [ #comment:   "Primeiro membro da animacao", ¼
  22.                     #format:   #string, ¼
  23.                    #default:   "" ], ¼
  24.     #memberUlt: [ #comment:   "Ultimo membro da animacao", ¼
  25.                     #format:   #string, ¼
  26.                    #default:   "" ], ¼
  27.     #espera: [ #comment: "Espera entre cada troca em 1/60s (velocidade)",¼
  28.                       #format: #integer,¼
  29.                      #default: 60 ],¼
  30.     #aleatorio: [ #comment: "Animacao randomica",¼
  31.                       #format: #boolean,¼
  32.                      #default: false ],¼
  33.     #tempoAleatorio: [ #comment: "Tempo de animacao randomica",¼
  34.                       #format: #boolean,¼
  35.                      #default: false ],¼
  36.     #delta: [ #comment: "Espera no inicio da animacao",¼
  37.                       #format: #integer,¼
  38.                      #default: 0 ],¼
  39.     #prioridade: [ #comment: "Prioridade da animacao (se anima em momentos criticos)",¼
  40.                       #format: #integer,¼
  41.                      #default: 0 ],¼
  42.     #memoria: [ #comment: "Memoria minima para animacao",¼
  43.                       #format: #integer,¼
  44.                      #default: 0 ]¼
  45.   ]
  46.   return p_list
  47. end
  48.  
  49. on beginSprite me
  50.   set spr = the spriteNum of me
  51.   inicializaAnima me
  52.   if prioridade < 0 then
  53.     set prioridade = 0
  54.   end if
  55.   
  56.   set quantosMetade = 50
  57.   set memMetade = the number of member "TrekFotosT_prim"
  58.   set atualMetade = memMetade
  59.   set trocaMetade = true
  60.   puppetSprite spr + 1, true
  61.   
  62. end
  63.  
  64. on inicializaAnima me
  65.   set memPrim to the number of member memberPrim
  66.   set memQuantos to (the number of member memberUlt) - memPrim + 1
  67.   set proxEspera = random(espera)
  68.   global myMemSize
  69.   if myMemSize > memoria * 1024 * 1024 then
  70.     set limitado = false
  71.   else
  72.     puppetSprite spr, true
  73.     set limitado = true
  74.     set m = random(memQuantos) - 1 + memPrim
  75.     set the member of sprite spr to member m
  76.   end if
  77.   put 0 into fotoAtual
  78.   set ultimaTroca = 0
  79.   if delta > 0 then set the visibility of sprite spr to false
  80. end
  81.  
  82. on cleanSprite me
  83.   puppetSprite (the spriteNum of me),false
  84.   puppetSPrite (spr + 1), false
  85.   set the visibility of sprite spr to true
  86.   set the visibility of sprite spr to true
  87. end 
  88.  
  89. on idleSprite me
  90.   
  91.   if limitado then return
  92.   
  93.   if not the visibility of sprite spr then return
  94.   global gMustUpdate
  95.   if ultimaTroca = 0 then set ultimaTroca = the timer
  96.   
  97.   set tmp = the timer - ultimaTroca
  98.   if delta > 0 and tmp > delta then
  99.     set ultimaTroca = the timer
  100.     set the visibility of sprite spr to true
  101.     set delta = 0
  102.     set tmp = 0
  103.   end if
  104.   
  105.   -- Testa se ja e' hora de trocar figura
  106.   if tempoAleatorio then
  107.     if tmp > proxEspera then
  108.       set tmp = true
  109.       set proxEspera = random(espera)
  110.     else
  111.       set tmp = false
  112.     end if
  113.   else
  114.     if trocaMetade and tmp > espera / 2 then
  115.       set trocaMetade = false
  116.       set atualMetade = atualMetade + 1
  117.       if atualMetade >= memMetade + quantosMetade then
  118.         set atualMetade = memMetade
  119.       end if
  120.       set the member of sprite (spr+1) to atualMetade
  121.       set gMustUpdate = true
  122.     end if
  123.     
  124.     if tmp > espera then
  125.       set tmp = true
  126.     else
  127.       set tmp = false
  128.     end if
  129.   end if
  130.   
  131.   -- Troca, se ja' for hora e se nao for em area critica
  132.   global gCritico
  133.   if tmp and prioridade >= gCritico then
  134.     
  135.     -- Descobre qual a proxima figura a trocar
  136.     if (aleatorio) then
  137.       put random(memQuantos - 1) - 1 into tmp
  138.       if tmp >= fotoAtual then put 1 + tmp into tmp
  139.       put tmp into fotoAtual
  140.     else
  141.       put fotoAtual + 1 into fotoAtual
  142.       if fotoAtual >= memQuantos then put 0 into fotoAtual
  143.     end if
  144.     
  145.     -- Muda figura e updateStage
  146.     set the member of sprite (the spriteNum of me) to memPrim + fotoAtual
  147.     set gMustUpdate to true
  148.     put the timer into ultimaTroca
  149.     set atualMetade = atualMetade + 1
  150.     if atualMetade >= memMetade + quantosMetade then
  151.       set atualMetade = memMetade
  152.     end if
  153.     set the member of sprite (spr+1) to atualMetade
  154.     set trocaMetade = true
  155.   end if
  156. end